<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>
        const map = new Map();
        // 1、 size 属性
        console.log("new map().size=",map.size); // 0第 2 章 ECMAScript 6 扩展

        // 2、 set 方法
        map.set('foo', 10);// 键是 字符串
        map.set(100, 'number');// 键是 数值
        map.set(undefined, 'undefined');// 键是 undefined
        map.set(NaN, 'NaN');// 键是 NaN
        map.set(-0, '-0');// 键是 -0
        map.set({ }, '{ }');// 键是 对象
        console.log("seted map.size=", map.size);// 6
        
        // 3、 get 方法
        const func = function () { };
        map.set(func, '函数也可以作为键')// 键是函数
        console.log("map.get(func)=", map.get(func));// 函数也可以作为键
        
        // 4、 has 方法
        console.log("map=", map); // 10
        console.log("map.has('foo')=", map.has('foo'));// true
        console.log("map.has('boo')=", map.has('boo'));// false
        console.log("map.has(100)=", map.has(100));// true
        console.log("map.has(undefined)=", map.has(undefined)); // true
        console.log("map.has(NaN)=", map.has(NaN));// true
        console.log("map.has(+0)=", map.has(+0));// true
        console.log("map.has({ })=", map.has({ }));// false
        
        // 5、 delete 方法
        map.delete(undefined);
        console.log("deleted,has(undefined)=", map.has(undefined));// false
        
        // 6、 clear 方法
        map.clear();
        console.log("cleared,size=", map.size);// 0
        </script>
</head>
<body>
    
</body>
</html>